Amazon Connectのデータストリーミング機能でAgent Event StreamsをKinesis Streamに送る
事業開発部の酒匂です。
先日、コンタクト履歴情報(Contact Trace Record)をKinesis firehose経由でS3に保存する手順について書いたので、今回はAgent Event StreamsをKinesis streamに送る手順について書いていきたいと思います。
Amazon Connectのデータストリーミング機能でコンタクト履歴情報をKinesis Firehose経由でS3に保存する
データストリーミングの設定
Amazon Connectインスタンスの設定メニューの「データストリーミング」を選択します。「データストリーミングの有効化」にチェックをつけます。
エージェントイベントの「新しいKinesis Streamを作成する」を選択します。今回の手順ではKinesis Streamを作成します。
ちなみにKinesis Streamはエージェントイベント用と問い合わせ追跡レコード用と共用することも可能ですが、別々に分けることが推奨されております。
Kinesisストリームの作成
下記の画面が表示されたら、kinesisストリームの作成を選択します。
Kinesisストリームの名前に任意の名前を入力します。
シャード数は、今回は検証用なので、1で作成することにします。入力したら、Kinesisストリームの作成を選択します。
作成されるまで、待ちます。
作成されました。
データストリーミングの設定(続き)
先ほど作成したkinesisストリームを設定し、「保存」を選択します。
動作確認
amazon connectにログインし、CCP上でエージェントのステータス変更などを行います。そのあとにKinesisストリームのデータを参照してみます。
Kinesisストリームの情報を参照します。
aws kinesis --profile amazon-connect describe-stream --stream-name amazon-connect-event-streams-test
{ "StreamDescription": { "KeyId": null, "EncryptionType": "NONE", "StreamStatus": "ACTIVE", "StreamName": "amazon-connect-event-streams-test", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "49585140691622066774210269436656396257631218903742939138" } } ], "StreamARN": "arn:aws:kinesis:ap-southeast-2:************:stream/amazon-connect-event-streams-test", "EnhancedMonitoring": [ { "ShardLevelMetrics": [] } ], "StreamCreationTimestamp": 1528209540.0, "RetentionPeriodHours": 24 } }
下記のコマンドでデータの中身を確認します。
aws kinesis --profile amazon-connect get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name amazon-connect-event-streams-test | jq -r '.ShardIterator' |xargs aws kinesis --profile amazon-connect get-records --shard-iterator | jq -r '.Records[].Data' | base64 --decode | jq
{ "AWSAccountId": "************", "AgentARN": "arn:aws:connect:ap-southeast-2:************:instance/e7ea8566-****-****-****-2ba1b1917d1a/agent/88849252-6525-450b-9c92-ab804080517a", "CurrentAgentSnapshot": { "AgentStatus": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/e7ea8566-****-****-****-2ba1b1917d1a/agent-state/f5c57fc6-39bb-4c06-993a-10348e6fe73a", "Name": "受付可", "StartTimestamp": "2018-06-04T15:41:28.028Z" }, "Configuration": { "AgentHierarchyGroups": null, "FirstName": "太郎", "LastName": "田和", "RoutingProfile": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/routing-profile/a4600719-b42e-4ed2-9c36-08222b8a0ef6", "DefaultOutboundQueue": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" }, "InboundQueues": [ { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" } ], "Name": "問い合わせチーム" }, "Username": "*****001" }, "Contacts": [ { "Channel": "VOICE", "ConnectedToAgentTimestamp": "2018-06-04T15:43:39.039Z", "ContactId": "c8bf3cb0-7aa7-4ac9-8977-b740e5289a2c", "InitialContactId": "5f3929f9-d175-4453-ae29-4dd0f97b347b", "InitiationMethod": "CALLBACK", "Queue": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" }, "QueueTimestamp": "2018-06-04T15:40:27.027Z", "State": "ENDED", "StateStartTimestamp": "2018-06-04T15:43:42.042Z" } ] }, "EventId": "74d86e68-5769-47eb-8272-2bd27952f9bf", "EventTimestamp": "2018-06-05T14:53:07.007Z", "EventType": "HEART_BEAT", "InstanceARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************", "PreviousAgentSnapshot": { "AgentStatus": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/agent-state/f5c57fc6-39bb-4c06-993a-10348e6fe73a", "Name": "受付可", "StartTimestamp": "2018-06-04T15:41:28.028Z" }, "Configuration": { "AgentHierarchyGroups": null, "FirstName": "太郎", "LastName": "田和", "RoutingProfile": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/routing-profile/a4600719-b42e-4ed2-9c36-08222b8a0ef6", "DefaultOutboundQueue": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" }, "InboundQueues": [ { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" } ], "Name": "問い合わせチーム" }, "Username": "*****001" }, "Contacts": [ { "Channel": "VOICE", "ConnectedToAgentTimestamp": "2018-06-04T15:43:39.039Z", "ContactId": "c8bf3cb0-7aa7-4ac9-8977-b740e5289a2c", "InitialContactId": "5f3929f9-d175-4453-ae29-4dd0f97b347b", "InitiationMethod": "CALLBACK", "Queue": { "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be", "Name": "問い合わせ受付" }, "QueueTimestamp": "2018-06-04T15:40:27.027Z", "State": "ENDED", "StateStartTimestamp": "2018-06-04T15:43:42.042Z" } ] }, "Version": "2017-10-01" }
こんな感じでデータが登録されていることが分かりました。
さいごに
コンタクト履歴情報(Contact Trace Record)と同様に簡単な設定でデータ連携をすることができました。今後は実際にこれらのデータをどう活用していけるのか?ということについて書いてみたいと思います。